package write.basic;

public class CirculateDemo {
    public static void main(String[] args) {
        //for循环常用于和次数有关的循环
        //循环变量的初始化
        //循环的条件(以循环变量为基础)
        //循环变量的改变
        int n = 5;
        for(n=0;n<10;n++){}

        //死循环
        //for(;;){}

        int i=0;
        for(;i<5;i++){}

        int j=0;
        for(;j<5;){
            j++;
        }

        //while：先判断后执行，有可能一次都不执行
        int q = 5;
        while(q>10){

        }

        //do...while：先执行后判断，至少执行一次
        //while搭配关键词break也可实现类似的效果
        //笔试：while();的小括号后面是要跟“;”的
        int p = 6;
        do{
            p--;
        }while (p>3);

        //循环相关的关键字
        //break:跳出循环/continue:跳过循环体中剩余语句而进入下一次循环
        //continue,效果一致，可以通过设计思路不使用continue
        for(int a=0;a<10;a++){
            if(a%3==0){
                continue;
            }
            System.out.print(a+" ");
        }
        System.out.println();
        for(int a=0;a<10;a++){
            if(a%3!=0){
                System.out.print(a+" ");
            }
        }
        System.out.println();

        //跳出循环,一般不用于单层循环，而是用与嵌套循环中，跳出内部循环，进入外部循环的下一次循环
        //break只能跳出一层循环，所以可以跳出内部循环，让外部循环进入下一次
        for(int a=1;a<10;a++){
            if(a%3==0){
                break;
            }
            System.out.print(a+" ");
        }
        System.out.println();
        //嵌套循环，循环套循环，三种循环可以随意组合，
        // 但循环层数越少越好，因为外层走一次，内层要走所有次，所以嵌套层数多时，循环次数会指数上升
        for(int a=0;a<3;a++){
            for(int b=0;b<10;b++){
                if(b==2) break;
                System.out.println("a="+a+",b="+b);
            }
        }

        int w = 100;
        //break搭配while,可以类似do{}while();一样先执行，阅读性更好
        //while(true){} 自造死循环
        while(true){
            if(w<95){
                break;
            }
            //.........
            w--;
        }

    }
}
